> ## Documentation Index
> Fetch the complete documentation index at: https://sequence-0fb8d9e6-api_docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Unreal Ecosystem Wallet Blockchain Interactions

> Ecosystem Wallet Documentation for Sequence's Unreal SDK.

## Sign messages

Sign messages on an external browser.

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-api_docs/FFhkfZMEs3Sxq_XK/images/unreal/ecosystem/sign_message.png?fit=max&auto=format&n=FFhkfZMEs3Sxq_XK&q=85&s=72035b4f23db3fa42dac5f5a351266b3" width="967" height="500" data-path="images/unreal/ecosystem/sign_message.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<bool> SuccessCallback = [OnSuccess](const bool& Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceWallet* Wallet = NewObject<USequenceWallet>();
    Wallet->SignMessage(TEXT("some text"), SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Transactions

### Get fee options

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-api_docs/FFhkfZMEs3Sxq_XK/images/unreal/ecosystem/get_fee_options.png?fit=max&auto=format&n=FFhkfZMEs3Sxq_XK&q=85&s=4186390957cf0b873e965baa95963377" width="1714" height="940" data-path="images/unreal/ecosystem/get_fee_options.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const FString To = TEXT("0x33985d320809E26274a72E03268c8a29927Bc6dA");
    const FString Value = TEXT("0");
    const FString FunctionSignature = TEXT("explicitEmit()");
    const TArray<FString> Values = { };

    UContractTransaction* Transaction = UContractTransaction::CreateContractTransaction(To, Value, FunctionSignature, Values);

    const TSuccessCallback<FFeeOptionsResponse> SuccessCallback = [OnSuccess](const FFeeOptionsResponse& Response) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceWallet* Wallet = NewObject<USequenceWallet>();
    Wallet->GetFeeOptions(Transaction, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

### Send transactions

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-api_docs/FFhkfZMEs3Sxq_XK/images/unreal/ecosystem/send_transaction.png?fit=max&auto=format&n=FFhkfZMEs3Sxq_XK&q=85&s=fdc30f75f6a08e8ed59542f2de0ea9b7" width="1714" height="940" data-path="images/unreal/ecosystem/send_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const FString To = TEXT("0x33985d320809E26274a72E03268c8a29927Bc6dA");
    const FString Value = TEXT("0");
    const FString FunctionSignature = TEXT("explicitEmit()");
    const TArray<FString> Values = { };

    UContractTransaction* Transaction = UContractTransaction::CreateContractTransaction(To, Value, FunctionSignature, Values);

    FFeeOption EmptyFee;

    const TSuccessCallback<FString> SuccessCallback = [OnSuccess](const FString& Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceWallet* Wallet = NewObject<USequenceWallet>();
    Wallet->SendTransaction(Transaction, EmptyFee, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

### Send transactions without Permissions

Send transactions on an external browser.

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-api_docs/FFhkfZMEs3Sxq_XK/images/unreal/ecosystem/transaction_without_permissions.png?fit=max&auto=format&n=FFhkfZMEs3Sxq_XK&q=85&s=9c9b48e8ec81814fc9b8c8669670035b" width="952" height="500" data-path="images/unreal/ecosystem/transaction_without_permissions.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const FString To = TEXT("0x33985d320809E26274a72E03268c8a29927Bc6dA");
    const FString Value = TEXT("0");
    const FString FunctionSignature = TEXT("explicitEmit()");
    const TArray<FString> Values = { };

    UContractTransaction* Transaction = UContractTransaction::CreateContractTransaction(To, Value, FunctionSignature, Values);

    const TSuccessCallback<FString> SuccessCallback = [OnSuccess](const FString& Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceWallet* Wallet = NewObject<USequenceWallet>();
    Wallet->SendTransactionWithoutPermissions(Transaction, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Transaction Factory

### Create Contract Transaction

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-api_docs/WB8SVVzKwBtb0HK7/images/unreal/ecosystem/create_contract_transaction.png?fit=max&auto=format&n=WB8SVVzKwBtb0HK7&q=85&s=bbe46172e8baad31b3ce3f0e2cdba26a" width="1480" height="758" data-path="images/unreal/ecosystem/create_contract_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const FString To = TEXT("0x33985d320809E26274a72E03268c8a29927Bc6dA");
    const FString Value = TEXT("0");
    const FString FunctionSignature = TEXT("explicitEmit()");
    const TArray<FString> Values = { };

    UContractTransaction* Transaction = UContractTransaction::CreateContractTransaction(To, Value, FunctionSignature, Values);
    ```
  </Tab>
</Tabs>

### Create Call Data Transaction

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-api_docs/WB8SVVzKwBtb0HK7/images/unreal/ecosystem/create_call_data_transaction.png?fit=max&auto=format&n=WB8SVVzKwBtb0HK7&q=85&s=e7fb4562f59e4f504e972d6a5aeeabf8" width="1480" height="758" data-path="images/unreal/ecosystem/create_call_data_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const FString To = TEXT("0x33985d320809E26274a72E03268c8a29927Bc6dA");
    const FString Value = TEXT("0");
    const FString Data = TEXT("0x00...");

    UCallDataTransaction* Transaction = UCallDataTransaction::CreateCallDataTransaction(To, Value, Data);
    ```
  </Tab>
</Tabs>

### Create Transaction Batch

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-api_docs/WB8SVVzKwBtb0HK7/images/unreal/ecosystem/create_transaction_batch.png?fit=max&auto=format&n=WB8SVVzKwBtb0HK7&q=85&s=c6ad698c1d9d0a31746f1195ef5711a2" width="1480" height="758" data-path="images/unreal/ecosystem/create_transaction_batch.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    TArray<TScriptInterface<ISeqTransactionBase>> Transactions;
    Transactions.Add(UCallDataTransaction::CreateCallDataTransaction("0x123...", "0", "0x00.."));

    UTransactionBatch* Transaction = UTransactionBatch::CreateTransactionBatch(To, Value, Data);
    ```
  </Tab>
</Tabs>
